
/** 公用UI通用接口声明 */
export interface IPublicUIBase {

    /** 关闭后不移除节点 */
    endRemove: boolean,

    /** 对象池 */
    nodePool: cc.NodePool,

    /**
     * 标准显示接口
     * @param [param] 自定义初始化参数 
     */
    show(param?: any): void,

    /**
     * 标准关闭接口
     */
    hide(): void
}

/**
 * 通用UI的基类
 */
export default class PublicUIBase extends cc.Component implements IPublicUIBase {

    /** 关闭后移除节点 (默认移除，减少内存消耗) */
    endRemove: boolean = true;

    /** 对象池 (not null，则被移除的节点存入对象池) */
    nodePool: cc.NodePool = null;

    /** 直接显示 */
    public show(param?: any): void {
        this.node.active = true;
    }

    /** 直接隐藏，并处理是否回收 */
    public hide(): void {
        this.node.active = false;

        if (this.endRemove) {
            if (!this.nodePool)
                this.node.removeFromParent(true);
            else
                this.nodePool.put(this.node);
        }
    }
}
